/*
 * Copyright (c) 2024 Huawei Device Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (theLicense");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *      http://www.apache.org/licenses/LICENSE-20
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef HARMONY_CARDVIEWCOMPONENTINSTANCE_H
#define HARMONY_CARDVIEWCOMPONENTINSTANCE_H
#include "RNOH/CppComponentInstance.h"
#include "CardViewStackNode.h"
#include "ShadowNodes.h"
#include "Props.h"

namespace rnoh {
    class CardViewComponentInstance : public CppComponentInstance<facebook::react::RNCardViewShadowNode> {
    private:
        CardViewStackNode m_stackNode;

        int backgroundcolor{0};
        float cornerRadius{0.0};
        float cardElevation{0.0};
        float cardMaxElevation{0.0};

    public:
        explicit CardViewComponentInstance(Context context);
        
        void onChildInserted(ComponentInstance::Shared const &childComponentInstance, std::size_t index) override;

        void onChildRemoved(ComponentInstance::Shared const &childComponentInstance) override;

        CardViewStackNode &GetLocalRootArkUINode() override;

        void onPropsChanged(SharedConcreteProps const &props) override;

        void getNapiProps(facebook::react::Props::Shared const props);
    };
}
#endif